1
Greedy vs. Lazy: Pilihan Strategis dalam Pengolahan Koleksi
AI019Lesson 5
00:00

Dalam Elixir, pengolahan data mengikuti dua filosofi yang berbeda: Greedy (Bertindak Cepat) dan Lazy. Memahami kompromi antara keduanya sangat penting untuk efisiensi memori dan stabilitas sistem.

1. Protokol Enumerable

Secara teknis, hal-hal yang dapat diiterasi dikatakan menerapkan protokol Enumerable. Kontrak umum ini memungkinkan struktur data yang beragam bekerja dengan serangkaian fungsi yang sama.

2. Modul Greedy vs. Lazy

Modul Enum adalah greedy. Ini berpotensi mengonsumsi seluruh isi koleksi segera, menciptakan daftar sementara pada setiap langkah pipa. Sebaliknya, modul Stream adalah lazy. Nilai berikutnya dihitung hanya ketika dibutuhkan.

Enum (Greedy)Memuat seluruh file 10 GB→ Gagal (Kekurangan Memori)Stream (Lazy)Membaca baris per baris→ Aman & Dapat Digabung

3. Spesifikasi vs. Hasil

Sebuah nilai Stream adalah spesifikasi dari apa yang kita inginkan, tetapi bukan hasil akhirnya. Stream dapat diiterasi dan digabung, memungkinkan Anda menumpuk transformasi tanpa menjalankan pekerjaan hingga Anda melewatkan stream ke "sink" yang cepat seperti Enum.to_list/1.

4. Kemurnian Paradigma

Mencampur paradigma (fungsional dan berorientasi objek) melemahkan manfaat dari pendekatan fungsional. Utamakan transformasi deklaratif daripada loop imperatif untuk prediktabilitas.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>